/*
 * Clase: PuntoFlotante
 *
 * Versi�n 1.0
 *
 * Copyrigth: Trabajo Pr�ctico Hector Morel - Gustavo Plan�s
 *
 */

package ecuacion;

/**
 * Clase PuntoFlotante
 * Implementaci�n de Numero para Floats
 * @author Hector Morel, Gustavo Plan�s
 */

public class PuntoFlotante implements Numero<PuntoFlotante> {
   
	private float valor;

	/**
	 * Constructor
	 * @param N�mero Float
	 */
   	public PuntoFlotante(float n) {
    	valor = n;
   	}
	
   	/**
   	 * M�todo para comparaci�n
   	 * @return Devuelve 1 si es mayor, -1 si es menor y 0 si es igual
   	 */
	public int comparar(PuntoFlotante e) {  
      	
      	if (this.valor < e.valor)
        	return -1;
         
      	if (this.valor > e.valor)
        	return 1;

      	return 0;
   	}
	
	/**
   	 * Convierte a texto
   	 * @return String del N�mero
   	 */
   	public String toString() {
    	return "" + valor;
   	}
   	
   	/**
   	 * Suma el Nro. recibido
   	 * @return Resultado de la Suma
   	 */  	
   	public PuntoFlotante sumar(PuntoFlotante e) {
   		return new PuntoFlotante(this.valor + e.valor);
   	}
   	
   	/**
   	 * Resta el Nro. recibido
   	 * @return Resultado de la Resta
   	 */  	
   	public PuntoFlotante restar(PuntoFlotante e) {
   		return new PuntoFlotante(this.valor - e.valor);
   	}
   	   	
   	/**
   	 * Multiplica el Nro. recibido
   	 * @return Resultado de la Multiplicaci�n
   	 */  	
   	public PuntoFlotante multiplicar(PuntoFlotante e) {
   		return new PuntoFlotante(this.valor * e.valor);
   	}
   	
   	/**
   	 * Multiplica por la inversa del Nro. recibido
   	 * @return Resultado Inverso de la Multiplicaci�n
   	 */
   	public PuntoFlotante multiplicarInversa(PuntoFlotante e) {
   		return new PuntoFlotante(this.valor * e.valor * -1);
   	}

   	/**
   	 * Divide el Nro. recibido
   	 * @return Resultado de la Divisi�n
   	 */
   	public PuntoFlotante dividir(PuntoFlotante e) {
   		return new PuntoFlotante(this.valor / e.valor);
   	}
   	
   	/**
   	 * Devuelve Cero en el Formato Especificado
   	 * @return PuntoFlotante 0
   	 */
   	public PuntoFlotante devuelveCero() {
   		return new PuntoFlotante(0);
   	}
   	
   	/**
   	 * Devuelve Uno en el Formato Especificado
   	 * @return PuntoFlotante 1
   	 */
   	public PuntoFlotante devuelveUno() {
   		return new PuntoFlotante(1);
   	}
   	
   	/**
   	 * Verifica si es cero o no
   	 * @return true si es cero y false en caso contrario
   	 */
   	public boolean esCero() {
   		return this.valor == 0;
   	}
}
